package com.iot.inclinometer.dao;

import com.iot.inclinometer.pojo.BaseInfo;
import com.iot.inclinometer.pojo.CorrectDataInfo;
import com.iot.inclinometer.pojo.DataInfo;
import com.iot.inclinometer.pojo.LeijiInfo;
import com.iot.inclinometer.pojo.ObserveInfo;
import com.iot.inclinometer.pojo.RealInfo;

import java.util.List;

/**
 * 操作基本数据的接口
 *
 * @author ZSL
 */
public interface IBaseInfoDao {

    /**
     * 找出表中全部数据
     *
     * @return List集合
     */
    List<BaseInfo> selectBaseInfos();

    /**
     * 通过项目名拿出表中相对应的数据集
     *
     * @param projectName 项目名
     * @return List集合
     */
    List<BaseInfo> selectBaseInfos(String projectName);

    /**
     * 通过钻孔编号查记录
     *
     * @param drillNum
     * @return
     */
    BaseInfo selectBaseInfo(String drillNum);

    /**
     * 通过工程名称和工点名称查找对象记录集合
     *
     * @param projectName
     * @param itemName
     * @return
     */
    List<BaseInfo> selectBaseInfos(String projectName, String itemName);

    /**
     * 三个参数
     *
     * @param projectName
     * @param itemName
     * @param drillNum
     * @return
     */
    BaseInfo selectBaseInfos(String projectName, String itemName,
                             String drillNum);

    /**
     * 通过主键ID来查找对应的记录
     *
     * @param baseId
     * @return
     */

    List<BaseInfo> selectBaseInfoById(int baseId);

    /**
     * 添加一条数据
     *
     * @param baseInfo
     * @return 返回插入的数据的ID
     */
    int add(BaseInfo baseInfo);

    /**
     * 根据baseId删除对应钻孔
     *
     * @param baseId
     * @return
     */
    int deleteByBaseId(int baseId);

    int deleteAllBaseInfos();

    /**
     * 导入备份数据
     *
     * @param baseInfoList
     * @param observeInfoList
     * @param dataInfoList
     * @param correctDataInfoList
     * @return
     */
    boolean insertList(List<BaseInfo> baseInfoList, List<ObserveInfo> observeInfoList, List<DataInfo> dataInfoList, List<LeijiInfo> leijidataInfoList, List<CorrectDataInfo> correctDataInfoList, List<RealInfo> realInfoList);
}
